From b1d2df5c9ccadb058d6edb9310329396d90c6315 Mon Sep 17 00:00:00 2001
From: tsteven4 <13596209+tsteven4@users.noreply.github.com>
Date: Sat, 27 Jul 2024 12:02:57 -0600
Subject: [PATCH] teach lowranceusr about track segments (#1306)
* teach lowranceusr about track segments.
lowranceusr versions 2 & 3 have a continuous flag used to
indicate dicontinuities in a trail.
The lowranceusr version 2 & 3 reader now flags trail discontinuities
as new track segements.
The lowranceusr version 2 & 3 writer now flags new track segments as
discontinuities.
Also fix two subtle bugs:
1) when reading a version 2 or 3 trail with the break option we would
fail to break the trail if the discontinuity was at the start of a
section other than the first section.
2) when writing a version 2 or 3 trail with the merge option if the
number of points exceeded MAX_TRAIL_POINTS we would write a header
that indicated MAX_TRAIL_POINTS but actually write MAX_TRAIL_POINTS + 1.
* add lowranceusr test for track segments.
---
lowranceusr.cc | 44 +-
lowranceusr.h | 2 +-
reference/lowrance-v2-merge~usr.gpx | 3766 ++++++++++++++++++++++++++
reference/lowrance-v2.gpx | 3770 +++++++++++++++++++++++++++
testo.d/lowranceusr.test | 13 +
5 files changed, 7577 insertions(+), 18 deletions(-)
create mode 100644 reference/lowrance-v2-merge~usr.gpx
create mode 100644 reference/lowrance-v2.gpx
diff --git a/lowranceusr.cc b/lowranceusr.cc
index c264a7956..92f533a18 100644
--- a/lowranceusr.cc
+++ b/lowranceusr.cc
@@ -989,16 +989,20 @@ LowranceusrFormat::lowranceusr_parse_trail(int* trail_num)
wpt_tmp->latitude = lat_mm_to_deg(gbfgetint32(file_in));
wpt_tmp->longitude = lon_mm_to_deg(gbfgetint32(file_in));
- // It's not clear if this should be the continuous global or
- // a local continuous_flag.
char continuous_flag = gbfgetc(file_in);
- if (!continuous_flag && opt_seg_break && j) {
- /* option to break trails into segments was specified */
- auto* trk_tmp = new route_head;
- trk_tmp->rte_num = ++(*trail_num);
- trk_tmp->rte_name = trk_head->rte_name;
- track_add_head(trk_tmp);
- trk_head = trk_tmp;
+ if (!continuous_flag) {
+ if (opt_seg_break) {
+ /* option to break trails into segments was specified */
+ if (!trk_head->rte_waypt_empty()) {
+ auto* trk_tmp = new route_head;
+ trk_tmp->rte_num = ++(*trail_num);
+ trk_tmp->rte_name = trk_head->rte_name;
+ track_add_head(trk_tmp);
+ trk_head = trk_tmp;
+ }
+ } else {
+ wpt_tmp->wpt_flags.new_trkseg = 1;
+ }
}
/* Track Point */
@@ -1589,7 +1593,7 @@ LowranceusrFormat::lowranceusr_trail_hdr(const route_head* trk)
gbfputint16(num_trail_points, file_out);
gbfputint16(max_trail_size, file_out);
gbfputint16(num_section_points, file_out);
- trail_point_count=1;
+ trail_point_count=0;
}
void
@@ -1689,7 +1693,8 @@ LowranceusrFormat::lowranceusr4_route_trl(const route_head* /*unused*/) const
void
LowranceusrFormat::lowranceusr_trail_disp(const Waypoint* wpt)
{
- if (trail_point_count <= MAX_TRAIL_POINTS) {
+ if (trail_point_count < MAX_TRAIL_POINTS) {
+ trail_point_count++;
int lat = lat_deg_to_mm(wpt->latitude);
int lon = lon_deg_to_mm(wpt->longitude);
@@ -1699,11 +1704,15 @@ LowranceusrFormat::lowranceusr_trail_disp(const Waypoint* wpt)
gbfputint32(lat, file_out);
gbfputint32(lon, file_out);
- gbfwrite(&continuous, 1, 1, file_out);
- if (!continuous) {
- continuous = 1;
- }
- trail_point_count++;
+ /* If this isn't the first point in the outgoing trail, and
+ * i) the source wpt was the start of a new track segment or
+ * ii) the source wpt is the first waypoint of a track that is being merged
+ * then set the continuous flag to 0 to indicate a discontinuity.
+ * Otherwise set the continous flag to 1.
+ */
+ char continuous_flag = !((trail_point_count > 1) && (wpt->wpt_flags.new_trkseg || merge_new_track));
+ merge_new_track = false;
+ gbfwrite(&continuous_flag, 1, 1, file_out);
}
}
@@ -1757,7 +1766,7 @@ LowranceusrFormat::lowranceusr_merge_trail_tlr(const route_head* /*unused*/)
void
LowranceusrFormat::lowranceusr_merge_trail_hdr_2(const route_head* /*unused*/)
{
- continuous = 0;
+ merge_new_track = true;
}
void
@@ -2038,6 +2047,7 @@ LowranceusrFormat::write()
gbfputint16(NumTrails, file_out);
if (NumTrails) {
trail_count=0;
+ merge_new_track = false;
auto lowranceusr_trail_disp_lambda = [this](const Waypoint* waypointp)->void {
lowranceusr_trail_disp(waypointp);
};
diff --git a/lowranceusr.h b/lowranceusr.h
index efeb6e310..98c21ef69 100644
--- a/lowranceusr.h
+++ b/lowranceusr.h
@@ -457,7 +457,7 @@ private:
unsigned short waypt_out_count{};
int trail_count{}, lowrance_route_count{};
int trail_point_count{};
- char continuous = 1;
+ bool merge_new_track{false};
short num_section_points{};
char* merge{};
int reading_version{};
diff --git a/reference/lowrance-v2-merge~usr.gpx b/reference/lowrance-v2-merge~usr.gpx
new file mode 100644
index 000000000..1cccf20f4
--- /dev/null
+++ b/reference/lowrance-v2-merge~usr.gpx
@@ -0,0 +1,3766 @@
+
+
+
+
+
+
+ Belle River Ridge
+ Belle River Ridge
+ Belle River Ridge
+ diamond 1
+
+
+
+ Dumping Ground
+ Dumping Ground
+ Dumping Ground
+ diamond 1
+
+
+
+ 001
+ 001
+ 001
+ diamond 1
+
+
+
+ 002
+ 002
+ 002
+ diamond 1
+
+
+
+ 003
+ 003
+ 003
+ diamond 1
+
+
+
+ 004
+ 004
+ 004
+ diamond 1
+
+
+
+ 005
+ 005
+ 005
+ diamond 1
+
+
+
+ 006
+ 006
+ 006
+ diamond 1
+
+
+
+ 007
+ 007
+ 007
+ diamond 1
+
+
+
+ 008
+ 008
+ 008
+ diamond 1
+
+
+
+ S
+ S
+ S
+ diamond 1
+
+
+
+ Dlphn Dprk
+ Dlphn Dprk
+ Dlphn Dprk
+ diamond 1
+
+
+
+ Delphine10
+ Delphine10
+ Delphine10
+ diamond 1
+
+
+
+ Church Mrn
+ Church Mrn
+ Church Mrn
+ diamond 1
+
+
+
+ Del 3Can R
+ Del 3Can R
+ Del 3Can R
+ diamond 1
+
+
+
+ Trgh Rkpil
+ Trgh Rkpil
+ Trgh Rkpil
+ diamond 1
+
+
+
+ Cn Grspt Shl
+ Cn Grspt Shl
+ Cn Grspt Shl
+ diamond 1
+
+
+
+ Gpt Frm Wd
+ Gpt Frm Wd
+ Gpt Frm Wd
+ diamond 1
+
+
+
+ Aba1Old
+ Aba1Old
+ Aba1Old
+ fish
+
+
+
+ Aba4
+ Aba4
+ Aba4
+ fish
+
+
+
+ Gpyc Wdbed
+ Gpyc Wdbed
+ Gpyc Wdbed
+ diamond 1
+
+
+
+ Lman 5Rock
+ Lman 5Rock
+ Lman 5Rock
+ diamond 1
+
+
+
+ Lman 5R N
+ Lman 5R N
+ Lman 5R N
+ diamond 1
+
+
+
+ Mansion 12
+ Mansion 12
+ Mansion 12
+ diamond 1
+
+
+
+ 9Ml Rk Pil
+ 9Ml Rk Pil
+ 9Ml Rk Pil
+ diamond 1
+
+
+
+ 9Ml Spintp
+ 9Ml Spintp
+ 9Ml Spintp
+ diamond 1
+
+
+
+ Bwal Beds1
+ Bwal Beds1
+ Bwal Beds1
+ diamond 1
+
+
+
+ 11Mi Wh Rk
+ 11Mi Wh Rk
+ 11Mi Wh Rk
+ diamond 1
+
+
+
+ Bsw 14 1
+ Bsw 14 1
+ Bsw 14 1
+ diamond 1
+
+
+
+ Bluswl Way13
+ Bluswl Way13
+ Bluswl Way13
+ diamond 1
+
+
+
+ Lmarker
+ Lmarker
+ Lmarker
+ diamond 1
+
+
+
+ Cn Memprk Rk
+ Cn Memprk Rk
+ Cn Memprk Rk
+ airplane
+
+
+
+ Cn Memprk R2
+ Cn Memprk R2
+ Cn Memprk R2
+ airplane
+
+
+
+ 12Mile Cn
+ 12Mile Cn
+ 12Mile Cn
+ diamond 1
+
+
+
+ Wht Pav 8F
+ Wht Pav 8F
+ Wht Pav 8F
+ diamond 1
+
+
+
+ Crmr9Plt1
+ Crmr9Plt1
+ Crmr9Plt1
+ tree stand
+
+
+
+ Cfmr9Plt2
+ Cfmr9Plt2
+ Cfmr9Plt2
+ tree stand
+
+
+
+ 700 4 Hump
+ 700 4 Hump
+ 700 4 Hump
+ x 3
+
+
+
+ Pthurn Cn1
+ Pthurn Cn1
+ Pthurn Cn1
+ diamond 1
+
+
+
+ Cn Clnt Flat
+ Cn Clnt Flat
+ Cn Clnt Flat
+ diamond 1
+
+
+
+ Bet-Crbc Wrk
+ Bet-Crbc Wrk
+ Bet-Crbc Wrk
+ wreck
+
+
+
+ Jefs Bigrk
+ Jefs Bigrk
+ Jefs Bigrk
+ x 3
+
+
+
+ 011
+ 011
+ 011
+ two fish
+
+
+
+ 012
+ 012
+ 012
+ two fish
+
+
+
+ Mch Outbrk
+ Mch Outbrk
+ Mch Outbrk
+ diamond 1
+
+
+
+ Mg Midchrck
+ Mg Midchrck
+ Mg Midchrck
+ diamond 1
+
+
+
+ Old Ch Gap
+ Old Ch Gap
+ Old Ch Gap
+ diamond 1
+
+
+
+ Oldsth Wd7
+ Oldsth Wd7
+ Oldsth Wd7
+ diamond 1
+
+
+
+ 12Rk Clsrhmp
+ 12Rk Clsrhmp
+ 12Rk Clsrhmp
+ diamond 1
+
+
+
+ 12Rk Sml
+ 12Rk Sml
+ 12Rk Sml
+ diamond 1
+
+
+
+ 12Rk Closhmp
+ 12Rk Closhmp
+ 12Rk Closhmp
+ diamond 1
+
+
+
+ 12Rk Bigi
+ 12Rk Bigi
+ 12Rk Bigi
+ diamond 1
+
+
+
+ Wpt 042*
+ Wpt 042*
+ Wpt 042*
+ fish
+
+
+
+ Wpt 043*
+ Wpt 043*
+ Wpt 043*
+ fish
+
+
+
+ Wpt 044*
+ Wpt 044*
+ Wpt 044*
+ fish
+
+
+
+ 009
+ 009
+ 009
+ diamond 1
+
+
+
+ 010
+ 010
+ 010
+ diamond 1
+
+
+
+ 013
+ 013
+ 013
+ diamond 1
+
+
+
+ 014
+ 014
+ 014
+ diamond 1
+
+
+
+ 015
+ 015
+ 015
+ diamond 1
+
+
+
+ 016
+ 016
+ 016
+ diamond 1
+
+
+
+ 017
+ 017
+ 017
+ diamond 1
+
+
+
+ 018
+ 018
+ 018
+ diamond 1
+
+
+
+ 019
+ 019
+ 019
+ diamond 1
+
+
+
+ 020
+ 020
+ 020
+ diamond 1
+
+
+
+ 021
+ 021
+ 021
+ diamond 1
+
+
+
+ 012
+ 012
+ 012
+ diamond 1
+
+
+ Event Marker 1
+ Event Marker 1
+ Event Marker 1
+ diamond 1
+
+
+ Event Marker 2
+ Event Marker 2
+ Event Marker 2
+ diamond 1
+
+
+ Trail 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/lowrance-v2.gpx b/reference/lowrance-v2.gpx
new file mode 100644
index 000000000..d56df6a1a
--- /dev/null
+++ b/reference/lowrance-v2.gpx
@@ -0,0 +1,3770 @@
+
+
+
+
+
+
+ Belle River Ridge
+ Belle River Ridge
+ Belle River Ridge
+ diamond 1
+
+
+
+ Dumping Ground
+ Dumping Ground
+ Dumping Ground
+ diamond 1
+
+
+
+ 001
+ 001
+ 001
+ diamond 1
+
+
+
+ 002
+ 002
+ 002
+ diamond 1
+
+
+
+ 003
+ 003
+ 003
+ diamond 1
+
+
+
+ 004
+ 004
+ 004
+ diamond 1
+
+
+
+ 005
+ 005
+ 005
+ diamond 1
+
+
+
+ 006
+ 006
+ 006
+ diamond 1
+
+
+
+ 007
+ 007
+ 007
+ diamond 1
+
+
+
+ 008
+ 008
+ 008
+ diamond 1
+
+
+
+ S
+ S
+ S
+ diamond 1
+
+
+
+ Dlphn Dprk
+ Dlphn Dprk
+ Dlphn Dprk
+ diamond 1
+
+
+
+ Delphine10
+ Delphine10
+ Delphine10
+ diamond 1
+
+
+
+ Church Mrn
+ Church Mrn
+ Church Mrn
+ diamond 1
+
+
+
+ Del 3Can R
+ Del 3Can R
+ Del 3Can R
+ diamond 1
+
+
+
+ Trgh Rkpil
+ Trgh Rkpil
+ Trgh Rkpil
+ diamond 1
+
+
+
+ Cn Grspt Shl
+ Cn Grspt Shl
+ Cn Grspt Shl
+ diamond 1
+
+
+
+ Gpt Frm Wd
+ Gpt Frm Wd
+ Gpt Frm Wd
+ diamond 1
+
+
+
+ Aba1Old
+ Aba1Old
+ Aba1Old
+ fish
+
+
+
+ Aba4
+ Aba4
+ Aba4
+ fish
+
+
+
+ Gpyc Wdbed
+ Gpyc Wdbed
+ Gpyc Wdbed
+ diamond 1
+
+
+
+ Lman 5Rock
+ Lman 5Rock
+ Lman 5Rock
+ diamond 1
+
+
+
+ Lman 5R N
+ Lman 5R N
+ Lman 5R N
+ diamond 1
+
+
+
+ Mansion 12
+ Mansion 12
+ Mansion 12
+ diamond 1
+
+
+
+ 9Ml Rk Pil
+ 9Ml Rk Pil
+ 9Ml Rk Pil
+ diamond 1
+
+
+
+ 9Ml Spintp
+ 9Ml Spintp
+ 9Ml Spintp
+ diamond 1
+
+
+
+ Bwal Beds1
+ Bwal Beds1
+ Bwal Beds1
+ diamond 1
+
+
+
+ 11Mi Wh Rk
+ 11Mi Wh Rk
+ 11Mi Wh Rk
+ diamond 1
+
+
+
+ Bsw 14 1
+ Bsw 14 1
+ Bsw 14 1
+ diamond 1
+
+
+
+ Bluswl Way13
+ Bluswl Way13
+ Bluswl Way13
+ diamond 1
+
+
+
+ Lmarker
+ Lmarker
+ Lmarker
+ diamond 1
+
+
+
+ Cn Memprk Rk
+ Cn Memprk Rk
+ Cn Memprk Rk
+ airplane
+
+
+
+ Cn Memprk R2
+ Cn Memprk R2
+ Cn Memprk R2
+ airplane
+
+
+
+ 12Mile Cn
+ 12Mile Cn
+ 12Mile Cn
+ diamond 1
+
+
+
+ Wht Pav 8F
+ Wht Pav 8F
+ Wht Pav 8F
+ diamond 1
+
+
+
+ Crmr9Plt1
+ Crmr9Plt1
+ Crmr9Plt1
+ tree stand
+
+
+
+ Cfmr9Plt2
+ Cfmr9Plt2
+ Cfmr9Plt2
+ tree stand
+
+
+
+ 700 4 Hump
+ 700 4 Hump
+ 700 4 Hump
+ x 3
+
+
+
+ Pthurn Cn1
+ Pthurn Cn1
+ Pthurn Cn1
+ diamond 1
+
+
+
+ Cn Clnt Flat
+ Cn Clnt Flat
+ Cn Clnt Flat
+ diamond 1
+
+
+
+ Bet-Crbc Wrk
+ Bet-Crbc Wrk
+ Bet-Crbc Wrk
+ wreck
+
+
+
+ Jefs Bigrk
+ Jefs Bigrk
+ Jefs Bigrk
+ x 3
+
+
+
+ 011
+ 011
+ 011
+ two fish
+
+
+
+ 012
+ 012
+ 012
+ two fish
+
+
+
+ Mch Outbrk
+ Mch Outbrk
+ Mch Outbrk
+ diamond 1
+
+
+
+ Mg Midchrck
+ Mg Midchrck
+ Mg Midchrck
+ diamond 1
+
+
+
+ Old Ch Gap
+ Old Ch Gap
+ Old Ch Gap
+ diamond 1
+
+
+
+ Oldsth Wd7
+ Oldsth Wd7
+ Oldsth Wd7
+ diamond 1
+
+
+
+ 12Rk Clsrhmp
+ 12Rk Clsrhmp
+ 12Rk Clsrhmp
+ diamond 1
+
+
+
+ 12Rk Sml
+ 12Rk Sml
+ 12Rk Sml
+ diamond 1
+
+
+
+ 12Rk Closhmp
+ 12Rk Closhmp
+ 12Rk Closhmp
+ diamond 1
+
+
+
+ 12Rk Bigi
+ 12Rk Bigi
+ 12Rk Bigi
+ diamond 1
+
+
+
+ Wpt 042*
+ Wpt 042*
+ Wpt 042*
+ fish
+
+
+
+ Wpt 043*
+ Wpt 043*
+ Wpt 043*
+ fish
+
+
+
+ Wpt 044*
+ Wpt 044*
+ Wpt 044*
+ fish
+
+
+
+ 009
+ 009
+ 009
+ diamond 1
+
+
+
+ 010
+ 010
+ 010
+ diamond 1
+
+
+
+ 013
+ 013
+ 013
+ diamond 1
+
+
+
+ 014
+ 014
+ 014
+ diamond 1
+
+
+
+ 015
+ 015
+ 015
+ diamond 1
+
+
+
+ 016
+ 016
+ 016
+ diamond 1
+
+
+
+ 017
+ 017
+ 017
+ diamond 1
+
+
+
+ 018
+ 018
+ 018
+ diamond 1
+
+
+
+ 019
+ 019
+ 019
+ diamond 1
+
+
+
+ 020
+ 020
+ 020
+ diamond 1
+
+
+
+ 021
+ 021
+ 021
+ diamond 1
+
+
+
+ 012
+ 012
+ 012
+ diamond 1
+
+
+ Event Marker 1
+ Event Marker 1
+ Event Marker 1
+ diamond 1
+
+
+ Event Marker 2
+ Event Marker 2
+ Event Marker 2
+ diamond 1
+
+
+ Trail 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Trail 1
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testo.d/lowranceusr.test b/testo.d/lowranceusr.test
index e35692ffa..c6592c364 100644
--- a/testo.d/lowranceusr.test
+++ b/testo.d/lowranceusr.test
@@ -152,3 +152,16 @@ gpsbabel -i lowranceusr -f ${REFERENCE}/lowrance-v6.usr -o unicsv,utc=0 -F ${TMP
tail -n +2 ${TMPDIR}/lowrance-v6-unicsv.txt | sed "s/[0-9]*,//" | sort -t , -k 3 > ${TMPDIR}/lowrance-v6-unicsv-sorted.txt
compare ${TMPDIR}/lowrance-v4-unicsv-sorted.txt ${TMPDIR}/lowrance-v6-unicsv-sorted.txt
+# test translation of version 2, 3 continuous flag to new track segments.
+# 1. when reading usr files can we translate the contiuous flag in a usr file to track segments?
+gpsbabel -i lowranceusr -f ${REFERENCE}/lowrance-v2.usr -o gpx -F ${TMPDIR}/lowrance-v2.gpx
+compare ${REFERENCE}/lowrance-v2.gpx ${TMPDIR}/lowrance-v2.gpx
+# 2. if so, when writing a usr file can we translate a track segment to the continuous flag in the usr file?
+gpsbabel -i gpx -f ${REFERENCE}/lowrance-v2.gpx -o lowranceusr -F ${TMPDIR}/lowrance-v2~gpx.usr
+gpsbabel -i lowranceusr -f ${TMPDIR}/lowrance-v2~gpx.usr -o gpx -F ${TMPDIR}/lowrance-v2~usr.gpx
+compare ${REFERENCE}/lowrance-v2.gpx ${TMPDIR}/lowrance-v2~usr.gpx
+# 3. can we get the track segments correct when we do a merge?
+gpsbabel -i gpx -f ${REFERENCE}/lowrance-v2.gpx -o lowranceusr,merge -F ${TMPDIR}/lowrance-v2-merge~gpx.usr
+gpsbabel -i lowranceusr -f ${TMPDIR}/lowrance-v2-merge~gpx.usr -o gpx -F ${TMPDIR}/lowrance-v2-merge~usr.gpx
+compare ${REFERENCE}/lowrance-v2-merge~usr.gpx ${TMPDIR}/lowrance-v2-merge~usr.gpx
+
--
2.30.2